#pragma once

class CScene;
class CCanvas;
class CRay;
class CPrimitive;
class CPoint3D;
class CColor;

class CRaytracer
{
public:
	CRaytracer(CScene& scene, CCanvas& canvas);
	~CRaytracer(void);

	void Trace();
private:
	void Raytrace(CRay& ray, CColor& color, int depth);
	CPrimitive*	GetClosestShape(CRay& ray, float& dist, CPoint3D& intersection, CPoint3D& normal);	
	CScene& scene;
	CCanvas& canvas;
};
